package jgl.vajra.kingkong.widget.utils;

import android.Manifest;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.graphics.Color;
import android.text.TextUtils;
import android.util.Log;

import jgl.vajra.kingkong.R;
import jgl.vajra.kingkong.widget.giide.GlideEngine;
import jgl.vajra.kingkong.widget.interfaces.ImagePickerListener;
import jgl.vajra.kingkong.widget.mvvm.view.AppActivityManager;
import jgl.vajra.kingkong.widget.permissions.PermissionListener;
import jgl.vajra.kingkong.widget.permissions.PermissionsUtil;

import com.luck.picture.lib.PictureSelector;
import com.luck.picture.lib.config.PictureConfig;
import com.luck.picture.lib.config.PictureMimeType;
import com.luck.picture.lib.entity.LocalMedia;
import com.luck.picture.lib.style.PictureCropParameterStyle;
import com.luck.picture.lib.style.PictureParameterStyle;
import com.luck.picture.lib.style.PictureWindowAnimationStyle;

import java.lang.ref.SoftReference;
import java.util.ArrayList;
import java.util.List;

import androidx.annotation.NonNull;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;

import static android.app.Activity.RESULT_OK;

/**
 * 作者: created by 张树启
 * 描述: 选择图片工具类
 */


public class PickFileToolsV2 {

    private static SoftReference<FragmentActivity> act;
    private int tag;
    private List<LocalMedia> photos = new ArrayList<>();
    private int picCount;
    private PictureParameterStyle mPictureParameterStyle;
    private PictureCropParameterStyle mCropParameterStyle;
    private boolean isVideo;

    public static PickFileToolsV2 init(FragmentActivity acty) {
        act = new SoftReference<>(acty);
        return new PickFileToolsV2();
    }

    public static PickFileToolsV2 init(Fragment _fragment) {
        act = new SoftReference<>(_fragment.getActivity());
        return new PickFileToolsV2();
    }


    private final int REQUEST_CODE_CHOOSE = 10001;


    public void onActivityResult(int requestCode, int resultCode, Intent data) {

        if (data == null) {
            listener.onPickPicEmpty();
            return;
        }
        if (requestCode == PictureConfig.CHOOSE_REQUEST && resultCode == RESULT_OK) {
            // photos = Matisse.obtainPathResult(data);
            if (photos != null) photos.clear();
            photos = PictureSelector.obtainMultipleResult(data);
            if (photos == null || photos.size() == 0) {
                listener.onPickPicEmpty();
                return;
            }
            if (listener != null) {
                if (!isVideo) {
                    List<String> list = new ArrayList<>();
                    for (LocalMedia photo : photos) {
                        String url;
                        if (TextUtils.isEmpty(photo.getAndroidQToPath())) {
                            url = photo.getCompressPath();
                        } else {
                            url = photo.getAndroidQToPath();

                        }
                        list.add(url);
                    }
                    if (listener != null)
                        listener.onPickImageList(list, tag);
                } else {
                    if (listener != null)
                        listener.onPickFileList(photos, tag);
                }
            }
            Log.d("Matisse", "mSelected: " + photos);
        }
    }

    private ImagePickerListener listener;


    private boolean sCrop;

    public void pick(final int picCount, final boolean cameraShow, final int crop, final ImagePickerListener listener) {
        pick(picCount, cameraShow, crop, false, listener);
    }

    public void pickVideo(final ImagePickerListener listener) {
        pickVideo(1, false, 0, true, listener);
    }

    public void pick(final int picCount, final boolean cameraShow, final int crop, final boolean isVideo, final ImagePickerListener listener) {
        if (act == null) {
            act = new SoftReference<>(AppActivityManager.getAppActivityManager().currentActivity());
        }
        String[] strings = {Manifest.permission.WRITE_EXTERNAL_STORAGE,
                Manifest.permission.CAMERA};
        PermissionsUtil.requestPermission(act.get(), new PermissionListener() {
                    @Override
                    public void permissionGranted(@NonNull String[] permissions) {
                        if (mPictureParameterStyle == null) {
                            getWeChatStyle();
                        }
                        PickFileToolsV2.this.picCount = picCount;
                        PickFileToolsV2.this.isVideo = isVideo;
                        sCrop = picCount <= 1 && crop != 0;
                        PictureSelector.create(act.get())
                                .openGallery(isVideo ? PictureMimeType.ofVideo() : PictureMimeType.ofImage())// 全部.PictureMimeType.ofAll()、图片.ofImage()、视频.ofVideo()、音频.ofAudio()
                                .imageEngine(GlideEngine.createGlideEngine())// 外部传入图片加载引擎，必传项
                                .theme(R.style.picture_default_style)// 主题样式设置 具体参考 values/styles   用法：R.style.picture.white.style v2.3.3后 建议使用setPictureStyle()动态方式
                                .setPictureStyle(mPictureParameterStyle)// 动态自定义相册主题
                                .setPictureCropStyle(mCropParameterStyle)// 动态自定义裁剪主题
                                .setPictureWindowAnimationStyle(new PictureWindowAnimationStyle())// 自定义相册启动退出动画
                                .isWithVideoImage(true)// 图片和视频是否可以同选,只在ofAll模式下有效
                                .maxSelectNum(picCount)// 最大图片选择数量
                                .minSelectNum(1)// 最小选择数量
                                .maxVideoSelectNum(1) // 视频最大选择数量，如果没有单独设置的需求则可以不设置，同用maxSelectNum字段
                                .minVideoSelectNum(1)// 视频最小选择数量，如果没有单独设置的需求则可以不设置，同用minSelectNum字段
                                .imageSpanCount(4)// 每行显示个数
                                .isReturnEmpty(false)// 未选择数据时点击按钮是否可以返回
                                //.isAndroidQTransform(false)// 是否需要处理Android Q 拷贝至应用沙盒的操作，只针对compress(false); && enableCrop(false);有效,默认处理
                                .setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)// 设置相册Activity方向，不设置默认使用系统
                                .isOriginalImageControl(true)// 是否显示原图控制按钮，如果设置为true则用户可以自由选择是否使用原图，压缩、裁剪功能将会失效
                                //.cameraFileName("test.png")    // 重命名拍照文件名、注意这个只在使用相机时可以使用，如果使用相机又开启了压缩或裁剪 需要配合压缩和裁剪文件名api
                                //.renameCompressFile("test.png")// 重命名压缩文件名、 注意这个不要重复，只适用于单张图压缩使用
                                //.renameCropFileName("test.png")// 重命名裁剪文件名、 注意这个不要重复，只适用于单张图裁剪使用
                                .selectionMode(picCount <= 1 ? PictureConfig.SINGLE : PictureConfig.MULTIPLE)// 多选 or 单选
                                .isSingleDirectReturn(true)// 单选模式下是否直接返回，PictureConfig.SINGLE模式下有效
                                .isPreviewImage(true)// 是否可预览图片
                                .isPreviewVideo(true)// 是否可预览视频
                                //.querySpecifiedFormatSuffix(PictureMimeType.ofJPEG())// 查询指定后缀格式资源
                                //.isEnablePreviewAudio(false) // 是否可播放音频
                                .isCamera(cameraShow)// 是否显示拍照按钮
                                //.isMultipleSkipCrop(false)// 多图裁剪时是否支持跳过，默认支持
                                .isZoomAnim(true)// 图片列表点击 缩放效果 默认true
                                //.imageFormat(PictureMimeType.PNG)// 拍照保存图片格式后缀,默认jpeg
                                .isEnableCrop(sCrop)// 是否裁剪
                                .isCompress(true)// 是否压缩
                                .compressQuality(60)// 图片压缩后输出质量 0~ 100
                                .synOrAsy(true)//同步false或异步true 压缩 默认同步
                                //.compressSavePath(getPath())//压缩图片保存地址
                                //.sizeMultiplier(0.5f)// glide 加载图片大小 0~1之间 如设置 .glideOverride()无效 注：已废弃
                                //.glideOverride(160, 160)// glide 加载宽高，越小图片列表越流畅，但会影响列表图片浏览的清晰度 注：已废弃
                                .withAspectRatio(1, 1)// 裁剪比例 如16:9 3:2 3:4 1:1 可自定义
                                //  .hideBottomControls(true)// 是否显示uCrop工具栏，默认不显示
                                .isGif(false)// 是否显示gif图片
                                .freeStyleCropEnabled(true)// 裁剪框是否可拖拽
                                .circleDimmedLayer(true)// 是否圆形裁剪
                                //.setCircleDimmedColor(ContextCompat.getColor(this, R.color.app_color_white))// 设置圆形裁剪背景色值
                                //.setCircleDimmedBorderColor(ContextCompat.getColor(getApplicationContext(), R.color.app_color_white))// 设置圆形裁剪边框色值
                                //.setCircleStrokeWidth(3)// 设置圆形裁剪边框粗细
                                .showCropFrame(crop == 1)// 是否显示裁剪矩形边框 圆形裁剪时建议设为false
                                .showCropGrid(crop == 1)// 是否显示裁剪矩形网格 圆形裁剪时建议设为false
                                .isOpenClickSound(false)// 是否开启点击声音
                                .selectionData(photos)// 是否传入已选图片
                                //.isDragFrame(false)// 是否可拖动裁剪框(固定)
                                .videoMaxSecond(15)
                               // .recordVideoSecond(30)
//                        .videoMinSecond(10)
                                .isPreviewEggs(false)// 预览图片时 是否增强左右滑动图片体验(图片滑动一即可看到上一张是否选中)
                                //.cropCompressQuality(90)// 注：已废弃 改用cutOutQuality()
                                .cutOutQuality(90)// 裁剪输出质量 默认100
                                .minimumCompressSize(100)// 小于100kb的图片不压缩
                                //.cropWH()// 裁剪宽高比，设置如果大于图片本身宽高则无效
                                //.rotateEnabled(true) // 裁剪是否可旋转图片
                                .scaleEnabled(true)// 裁剪是否可放大缩小图片
                                //.videoQuality()// 视频录制质量 0 or 1
                                //.videoSecond()//显示多少秒以内的视频or音频也可适用
                                 .recordVideoSecond(15)//录制视频秒数 默认60s
                                //.setOutputCameraPath("/CustomPath")// 自定义拍照保存路径  注：已废弃
                                .forResult(PictureConfig.CHOOSE_REQUEST);//结果回调onActivityResult code


                        if (listener != null) {
                            PickFileToolsV2.this.listener = listener;
                        }
                    }

                    @Override
                    public void permissionDenied(@NonNull String[] permissions) {
                        //  ToastUtils.showShort("请到设置-权限管理中开启");

                    }
                }, strings
        );


    }
    public void pickVideo(final int picCount, final boolean cameraShow, final int crop, final boolean isVideo, final ImagePickerListener listener) {
        if (act == null) {
            act = new SoftReference<>(AppActivityManager.getAppActivityManager().currentActivity());
        }
        String[] strings = {Manifest.permission.WRITE_EXTERNAL_STORAGE,
                Manifest.permission.CAMERA};
        PermissionsUtil.requestPermission(act.get(), new PermissionListener() {
                    @Override
                    public void permissionGranted(@NonNull String[] permissions) {
                        if (mPictureParameterStyle == null) {
                            getWeChatStyle();
                        }
                        PickFileToolsV2.this.picCount = picCount;
                        PickFileToolsV2.this.isVideo = isVideo;
                        sCrop = picCount <= 1 && crop != 0;
                        PictureSelector.create(act.get())
                                .openGallery(PictureMimeType.ofVideo())// 全部.PictureMimeType.ofAll()、图片.ofImage()、视频.ofVideo()、音频.ofAudio()
                                .imageEngine(GlideEngine.createGlideEngine())// 外部传入图片加载引擎，必传项
                                .theme(R.style.picture_default_style)// 主题样式设置 具体参考 values/styles   用法：R.style.picture.white.style v2.3.3后 建议使用setPictureStyle()动态方式
                                .isWeChatStyle(true)// 是否开启微信图片选择风格
                                .setPictureStyle(mPictureParameterStyle)// 动态自定义相册主题
                                .setPictureCropStyle(mCropParameterStyle)// 动态自定义裁剪主题
                                .setPictureWindowAnimationStyle(new PictureWindowAnimationStyle())// 自定义相册启动退出动画
                                .isWithVideoImage(true)// 图片和视频是否可以同选,只在ofAll模式下有效
                                .maxSelectNum(1)// 最大图片选择数量
                                .minSelectNum(1)// 最小选择数量
                                //.maxVideoSelectNum(1) // 视频最大选择数量，如果没有单独设置的需求则可以不设置，同用maxSelectNum字段
                                //.minVideoSelectNum(1)// 视频最小选择数量，如果没有单独设置的需求则可以不设置，同用minSelectNum字段
                                .imageSpanCount(4)// 每行显示个数
                                .isReturnEmpty(false)// 未选择数据时点击按钮是否可以返回
                                //.isAndroidQTransform(false)// 是否需要处理Android Q 拷贝至应用沙盒的操作，只针对compress(false); && enableCrop(false);有效,默认处理
                                .setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)// 设置相册Activity方向，不设置默认使用系统
                                .isOriginalImageControl(true)// 是否显示原图控制按钮，如果设置为true则用户可以自由选择是否使用原图，压缩、裁剪功能将会失效
                                //.cameraFileName("test.png")    // 重命名拍照文件名、注意这个只在使用相机时可以使用，如果使用相机又开启了压缩或裁剪 需要配合压缩和裁剪文件名api
                                //.renameCompressFile("test.png")// 重命名压缩文件名、 注意这个不要重复，只适用于单张图压缩使用
                                //.renameCropFileName("test.png")// 重命名裁剪文件名、 注意这个不要重复，只适用于单张图裁剪使用
                                .selectionMode(PictureConfig.SINGLE)// 多选 or 单选
                                .isSingleDirectReturn(true)// 单选模式下是否直接返回，PictureConfig.SINGLE模式下有效
                                .isPreviewImage(true)// 是否可预览图片
                                .isPreviewVideo(true)// 是否可预览视频
                                //.querySpecifiedFormatSuffix(PictureMimeType.ofJPEG())// 查询指定后缀格式资源
                               // .enablePreviewAudio(false) // 是否可播放音频
                                .isCamera(false)// 是否显示拍照按钮
                                //.isMultipleSkipCrop(false)// 多图裁剪时是否支持跳过，默认支持
                                .isZoomAnim(true)// 图片列表点击 缩放效果 默认true
                                //.imageFormat(PictureMimeType.PNG)// 拍照保存图片格式后缀,默认jpeg
                                .isEnableCrop(true)// 是否裁剪
                                .isCompress(true)// 是否压缩
                                .compressQuality(80)// 图片压缩后输出质量 0~ 100
                                .synOrAsy(true)//同步false或异步true 压缩 默认同步
                                //.queryMaxFileSize(10)// 只查多少M以内的图片、视频、音频  单位M
                                //.compressSavePath(getPath())//压缩图片保存地址
                                //.sizeMultiplier(0.5f)// glide 加载图片大小 0~1之间 如设置 .glideOverride()无效 注：已废弃
                                //.glideOverride(160, 160)// glide 加载宽高，越小图片列表越流畅，但会影响列表图片浏览的清晰度 注：已废弃
                                .withAspectRatio(16, 9)// 裁剪比例 如16:9 3:2 3:4 1:1 可自定义
                                .hideBottomControls(true)// 是否显示uCrop工具栏，默认不显示
                                .isGif(false)// 是否显示gif图片
                                .freeStyleCropEnabled(true)// 裁剪框是否可拖拽
                                .circleDimmedLayer(true)// 是否圆形裁剪
                                //.setCircleDimmedColor(ContextCompat.getColor(this, R.color.app_color_white))// 设置圆形裁剪背景色值
                                //.setCircleDimmedBorderColor(ContextCompat.getColor(getApplicationContext(), R.color.app_color_white))// 设置圆形裁剪边框色值
                                //.setCircleStrokeWidth(3)// 设置圆形裁剪边框粗细
                                .showCropFrame(false)// 是否显示裁剪矩形边框 圆形裁剪时建议设为false
                                .showCropGrid(false)// 是否显示裁剪矩形网格 圆形裁剪时建议设为false
                                .isOpenClickSound(false)// 是否开启点击声音
                                //.isDragFrame(false)// 是否可拖动裁剪框(固定)
//                        .videoMinSecond(10)
                                //.previewEggs(false)// 预览图片时 是否增强左右滑动图片体验(图片滑动一半即可看到上一张是否选中)
                                //.cropCompressQuality(90)// 注：已废弃 改用cutOutQuality()
                                .cutOutQuality(90)// 裁剪输出质量 默认100
                                .minimumCompressSize(100)// 小于100kb的图片不压缩
                                //.cropWH()// 裁剪宽高比，设置如果大于图片本身宽高则无效
                                //.rotateEnabled(true) // 裁剪是否可旋转图片
                                //.scaleEnabled(true)// 裁剪是否可放大缩小图片
                                //.videoQuality()// 视频录制质量 0 or 1
                                //.videoSecond()//显示多少秒以内的视频or音频也可适用
                                //.recordVideoSecond()//录制视频秒数 默认60s
                                //.setOutputCameraPath("/CustomPath")// 自定义拍照保存路径  注：已废弃
                                .forResult(PictureConfig.CHOOSE_REQUEST);//结果回调onActivityResult code


                        if (listener != null) {
                            PickFileToolsV2.this.listener = listener;
                        }
                    }

                    @Override
                    public void permissionDenied(@NonNull String[] permissions) {
                        //  ToastUtils.showShort("请到设置-权限管理中开启");

                    }
                }, strings
        );


    }

    /**
     * 显示 拍照按钮，不裁剪
     *
     * @param picCount
     * @param lisenter
     */
    public void pick(int picCount, ImagePickerListener lisenter) {
        pick(picCount, true, 0, lisenter);
    }


    /**
     * 是否显示拍照按钮  是否裁剪  单张图片
     *
     * @param lisenter
     */
    public void pick(boolean cameraShow, int crop, ImagePickerListener lisenter) {
        pick(1, cameraShow, crop, lisenter);
    }


    /**
     * 不显示拍照按钮  不裁剪  单张图片
     *
     * @param lisenter
     */
    public void pick(ImagePickerListener lisenter) {
        pick(true, 0, lisenter);
    }

    /**
     * 不显示拍照 单张 裁剪 无标记
     *
     * @param lisenter
     */
    public void pickOne(ImagePickerListener lisenter) {
        pickOne(-1, true, 2, lisenter);

    }

    /**
     * 不显示拍照 单张 裁剪
     *
     * @param lisenter
     */
    public void pickOne(int tag, int crop, ImagePickerListener lisenter) {
        this.tag = tag;
        pickOne(1, false, crop, lisenter);
    }


    public void pickOne(int tag, boolean cameraShow, int crop, ImagePickerListener lisenter) {
        this.tag = tag;
        pick(1, cameraShow, crop, false, lisenter);
    }


    /**
     * 拍照 不裁剪 无标记
     */
    public void capture(ImagePickerListener lisenter) {
        capture(lisenter, -1);
    }


    /**
     * 拍照 不裁剪
     */
    public void capture(ImagePickerListener lisenter, int tag) {
        capture(false, lisenter, tag);
    }

    /**
     * 拍照 是否裁剪 无标记
     */
    public void capture(boolean crop, final ImagePickerListener lisenter) {
        capture(crop, lisenter, -1);
    }

    /**
     * 拍照 是否裁剪？ 标记
     *
     * @param crop
     */
    public void capture(final boolean crop, final ImagePickerListener lisenter, final int tag) {
        if (act == null) {
            act = new SoftReference<>(AppActivityManager.getAppActivityManager().currentActivity());
        }
        String[] strings = {Manifest.permission.WRITE_EXTERNAL_STORAGE,
                Manifest.permission.CAMERA};

    }

    public void deleteImage(int position) {
        if (photos == null || photos.size() == 0 || photos.size() <= position) {
            return;
        }
        photos.remove(position);
    }

    public void deleteImage(String deleteUrl) {
        if (photos == null || photos.size() == 0) {
            return;
        }
        for (LocalMedia photo : photos) {
            String url ;
            if (TextUtils.isEmpty(photo.getAndroidQToPath())) {
                url = photo.getCompressPath();
            } else {
                url = photo.getAndroidQToPath();

            }
            if (url .equals(deleteUrl)) {
                photos.remove(photo);
                break;
            }
        }



    }

    public void clearPhotos() {
        if (photos != null) photos.clear();
    }

    public void setPhotosList(List pathList) {
        photos.clear();
        photos.addAll(pathList);
    }

    private void getWeChatStyle() {
        // 相册主题
        mPictureParameterStyle = new PictureParameterStyle();
        // 是否改变状态栏字体颜色(黑白切换)
        mPictureParameterStyle.isChangeStatusBarFontColor = false;
        // 是否开启右下角已完成(0/9)风格
        mPictureParameterStyle.isOpenCompletedNumStyle = false;
        // 是否开启类似QQ相册带数字选择风格
        mPictureParameterStyle.isOpenCheckNumStyle = true;
        // 状态栏背景色
        mPictureParameterStyle.pictureStatusBarColor = Color.parseColor("#393a3e");
        // 相册列表标题栏背景色
        mPictureParameterStyle.pictureTitleBarBackgroundColor = Color.parseColor("#393a3e");
        // 相册父容器背景色
        mPictureParameterStyle.pictureContainerBackgroundColor = ContextCompat.getColor(act.get(), R.color.black_1d);
        // 相册列表标题栏右侧上拉箭头
        mPictureParameterStyle.pictureTitleUpResId = R.drawable.picture_icon_wechat_up;
        // 相册列表标题栏右侧下拉箭头
        mPictureParameterStyle.pictureTitleDownResId = R.drawable.picture_icon_wechat_down;
        // 相册文件夹列表选中圆点
        mPictureParameterStyle.pictureFolderCheckedDotStyle = R.drawable.picture_orange_oval;
        // 相册返回箭头
        mPictureParameterStyle.pictureLeftBackIcon = R.drawable.picture_icon_close;
        // 标题栏字体颜色
        mPictureParameterStyle.pictureTitleTextColor = ContextCompat.getColor(act.get(), R.color.picture_color_white);
        // 相册右侧按钮字体颜色  废弃 改用.pictureRightDefaultTextColor和.pictureRightDefaultTextColor
        mPictureParameterStyle.pictureCancelTextColor = ContextCompat.getColor(act.get(), R.color.picture_color_53575e);
        // 相册右侧按钮字体默认颜色
        mPictureParameterStyle.pictureRightDefaultTextColor = ContextCompat.getColor(act.get(), R.color.picture_color_53575e);
        // 相册右侧按可点击字体颜色,只针对isWeChatStyle 为true时有效果
        mPictureParameterStyle.pictureRightSelectedTextColor = ContextCompat.getColor(act.get(), R.color.picture_color_white);
        // 相册右侧按钮背景样式,只针对isWeChatStyle 为true时有效果
       // mPictureParameterStyle.pictureRightDefaultBackgroundStyle = R.drawable.picture_send_button_default_bg;
        // 相册右侧按钮可点击背景样式,只针对isWeChatStyle 为true时有效果
       // mPictureParameterStyle.pictureRightBackgroundStyle = R.drawable.picture_send_button_bg;
        // 相册列表勾选图片样式
        mPictureParameterStyle.pictureCheckedStyle = R.drawable.picture_wechat_num_selector;
        // 相册标题背景样式 ,只针对isWeChatStyle 为true时有效果
        mPictureParameterStyle.pictureWeChatTitleBackgroundStyle = R.drawable.picture_album_bg;
        // 微信样式 预览右下角样式 ,只针对isWeChatStyle 为true时有效果
        mPictureParameterStyle.pictureWeChatChooseStyle = R.drawable.picture_wechat_select_cb;
        // 相册返回箭头 ,只针对isWeChatStyle 为true时有效果
        mPictureParameterStyle.pictureWeChatLeftBackStyle = R.drawable.picture_icon_back;
        // 相册列表底部背景色
        mPictureParameterStyle.pictureBottomBgColor = ContextCompat.getColor(act.get(), R.color.picture_color_grey);
        // 已选数量圆点背景样式
        mPictureParameterStyle.pictureCheckNumBgStyle = R.drawable.picture_num_oval;
        // 相册列表底下预览文字色值(预览按钮可点击时的色值)
        mPictureParameterStyle.picturePreviewTextColor = ContextCompat.getColor(act.get(), R.color.picture_color_white);
        // 相册列表底下不可预览文字色值(预览按钮不可点击时的色值)
        mPictureParameterStyle.pictureUnPreviewTextColor = ContextCompat.getColor(act.get(), R.color.picture_color_9b);
        // 相册列表已完成色值(已完成 可点击色值)
        mPictureParameterStyle.pictureCompleteTextColor = ContextCompat.getColor(act.get(), R.color.picture_color_fa632d);
        // 相册列表未完成色值(请选择 不可点击色值)
        mPictureParameterStyle.pictureUnCompleteTextColor = ContextCompat.getColor(act.get(), R.color.picture_color_9b);
        // 预览界面底部背景色
        mPictureParameterStyle.picturePreviewBottomBgColor = ContextCompat.getColor(act.get(), R.color.picture_color_half_grey);
        // 外部预览界面删除按钮样式
        mPictureParameterStyle.pictureExternalPreviewDeleteStyle = R.drawable.picture_icon_delete;
        // 原图按钮勾选样式  需设置.isOriginalImageControl(true); 才有效
        mPictureParameterStyle.pictureOriginalControlStyle = R.drawable.picture_original_wechat_checkbox;
        // 原图文字颜色 需设置.isOriginalImageControl(true); 才有效
        mPictureParameterStyle.pictureOriginalFontColor = ContextCompat.getColor(act.get(), R.color.white);
        // 外部预览界面是否显示删除按钮
        mPictureParameterStyle.pictureExternalPreviewGonePreviewDelete = true;
        // 设置NavBar Color SDK Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP有效
        mPictureParameterStyle.pictureNavBarColor = Color.parseColor("#393a3e");

//        // 自定义相册右侧文本内容设置
//        mPictureParameterStyle.pictureRightDefaultText = "";
//        // 自定义相册列表不可预览文字
//        mPictureParameterStyle.pictureUnPreviewText = "";
//        // 自定义相册列表预览文字
//        mPictureParameterStyle.picturePreviewText = "";
//        // 自定义预览页右下角选择文字文案
//        mPictureParameterStyle.pictureWeChatPreviewSelectedText = "";

//        // 自定义相册标题文字大小
//        mPictureParameterStyle.pictureTitleTextSize = 9;
//        // 自定义相册右侧文字大小
//        mPictureParameterStyle.pictureRightTextSize = 9;
//        // 自定义相册预览文字大小
//        mPictureParameterStyle.picturePreviewTextSize = 9;
//        // 自定义相册完成文字大小
//        mPictureParameterStyle.pictureCompleteTextSize = 9;
//        // 自定义原图文字大小
//        mPictureParameterStyle.pictureOriginalTextSize = 9;
//        // 自定义预览页右下角选择文字大小
//        mPictureParameterStyle.pictureWeChatPreviewSelectedTextSize = 9;

        // 裁剪主题
        mCropParameterStyle = new PictureCropParameterStyle(
                ContextCompat.getColor(act.get(), R.color.gray_d3),
                ContextCompat.getColor(act.get(), R.color.gray_d3),
                Color.parseColor("#393a3e"),
                ContextCompat.getColor(act.get(), R.color.white),
                mPictureParameterStyle.isChangeStatusBarFontColor);
    }

}
